using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DragonAwakening.Core.Graphics;

namespace DragonAwakening.Core.Game
{
    /// <summary>
    /// Game state class
    /// </summary>
    public class GameState
    {
        /// <summary>
        /// Public instance.
        /// </summary>
        public static GameState Instance = new GameState();

        /// <summary>
        /// Checks if the game state in specified state.
        /// </summary>
        /// <typeparam name="T">State versus current is checked.</typeparam>
        /// <returns></returns>
        public bool Is<T>() where T : GameState
        {
            return this.GetType() == typeof(T);
        }
    }

    /// <summary>
    /// Character stats game state.
    /// </summary>
    public class CharacterStatsGameState : GameState
    {
        /// <summary>
        /// Public instance.
        /// </summary>
        public new static CharacterStatsGameState Instance = new CharacterStatsGameState();

        /// <summary>
        /// Gets or sets the character to be shown.
        /// </summary>
        public Character Character { get; set; }

        /// <summary>
        /// Gets or sets the character info mode.
        /// </summary>
        public CharacterInfoMode Mode { get; set; }
    }
}
